package cn.com.wxd.dao.website;

import java.util.HashMap;
import java.util.List;

import cn.com.wxd.entity.website.CommentInfo;
import cn.com.wxd.common.PageInfo;
import cn.com.wxd.common.data.KeyValue;

/**
 * Title:评论持久化接口
 * Description:cn.com.wxd.dao.website
 * 
 * Company: wxd网站系统
 * Copyright: Copyright (c) 2015
 * All right reserved.
 * Created time: 2016-6-20 下午1:48:29
 *
 * @author WangXuDong
 * @version 1.0
 */
public interface CommentDao {
	/**
	 * 根据ID获取评论
	 * @param id
	 * @return
	 */
	CommentInfo selectCommentById(int id);
	/**
	 * 获取所有的评论
	 * @param page 
	 * @param orderKV 
	 * @return
	 */
	List<CommentInfo> selectComment(PageInfo page, KeyValue<String, String> orderKV);
	/**
	 * 根据回复ID获取评论列表
	 * @param reid 回复ID
	 * @param page 分页信息
	 * @param orderKV 排序 key字段 value(desc,asc)
	 * @return
	 */
	List<CommentInfo> selectCommentByReid(int reid, PageInfo page, KeyValue<String, String> orderKV);
	/**
	 * 根据文章号获取评论根列表
	 * @param artId 文章号
	 * @param page 分页信息
	 * @param orderKV 排序 key字段 value(desc,asc)
	 * @return
	 */
	List<CommentInfo> selectRootCommentByArtId(int artId, PageInfo page, KeyValue<String, String> orderKV);
	/**
	 * 根据用户获取评论根列表
	 * @param userId 用户号
	 * @param page 分页信息
	 * @param orderKV 排序 key字段 value(desc,asc)
	 * @return
	 */
	List<CommentInfo> selectRootCommentByUserId(int userId, PageInfo page, KeyValue<String, String> orderKV);
	/**
	 * 新增一条评论
	 * @param comment
	 * @return
	 */
	boolean insertComment(CommentInfo comment);
	/**
	 * 禁用或开启评论
	 * @param id id
	 * @param isDisabled true禁用，false开启
	 * @return
	 */
	boolean updateDisabled(int id, boolean isDisabled);
	/**
	 * 更新一条评论
	 * @param id id
	 * @param param 参数
	 * @return
	 */
	boolean updateComment(int id, HashMap<String, Object> param);
	/**
	 * 删除评论
	 * @param id
	 * @return
	 */
	boolean deleteComment(int id);
	/**
	 * 获取某篇文章的评论数
	 * @param artId 文章ID
	 * @return
	 */
	int selectCommCountByArtId(int artId);
	/**
	 * 根据回复号获取数量
	 * @param repId 回复号
	 * @return
	 */
	int selectCommCountByRepId(int repId);
	/**
	 * 添加赞
	 * @param commIds 被赞的评论
	 * @param addCounts 数量  添加的数量
	 * @return
	 */
	boolean insertPraise(int[] commIds, int[] addCounts);
	/**
	 * 添加不喜欢
	 * @param commIds 被不喜欢的评论
	 * @param addCounts 数量  添加的数量
	 * @return
	 */
	boolean insertDislike(int[] commIds, int[] addCounts);
	/**
	 * 添加举报
	 * @param commIds 举报的评论ID
	 * @param addCounts 数量  举报的次数
	 * @return
	 */
	boolean insertReport(int[] commIds, int[] addCounts);
}
